package negocio.daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import negocio.entidades.Questao;
import negocio.entidades.Tema;

public class QuestaoDAO {
	private EntityManager em;

	public QuestaoDAO(EntityManager em) {
		this.em = em;
	}

	public Questao salvar(Questao q) throws Exception {
		if (q.getId() > 0) {
			if (consultarPorId(q.getId()) != null) {
				em.merge(q);
			}
		} else {
			em.persist(q);
		}
		return q;
	}

	public void excluir(long id) throws Exception {
		Questao q = consultarPorId(id);
		if (q != null) {
			em.remove(q);
		}
	}

	@SuppressWarnings("unchecked")
	public List<Questao> listar(String enunciado) throws Exception {
		Query q = em.createQuery(
				"select q from Questao q where q.enunciadoText like lower('%"
						+ enunciado + "%')", Questao.class);
		return q.getResultList();
	}

	public Questao consultarPorId(long id) throws Exception {
		Questao q = (Questao) em.createQuery(
				"select q from Questao q where q.id =" + id).getSingleResult();
		return q;
	}
	
	public Tema consultarPorId(String tema) throws Exception {
		Tema t = (Tema) em.createQuery("select t from Tema t where t.descricao like '" +tema+"'").getSingleResult();
		return t;
	}
}
